#ifndef COLAPRIORIDAD_H
#define COLAPRIORIDAD_H

#include "Array.h"

template <class T>
class ColaPrioridad abstract
{
	public:
		
		// PRE: 
		// POS: Destructor
		virtual ~ColaPrioridad(){}

		// PRE: 
		// POS: Inserta el elemento e en la cola de prioridad
		virtual void Insertar(const T& elemento) abstract;

		// PRE: 
		// POS: retorna el primer elemento de la cola de prioridad
		virtual T& Minimo() abstract;

		// PRE: 
		// POS: Elimina el primer elemento de la cola
		virtual void BorrarMinimo() abstract;
		
		// PRE: 
		// POS: Vacia la cola 
		virtual void Vaciar() abstract;

		// PRE: 
		// POS: 
		virtual bool EsVacia() const abstract;

		// PRE: 
		// POS: 
		virtual bool EsLlena() const abstract;
// PRE: 
		// POS: 
		virtual void ActualizarPrioridad(T& elemento) abstract;

};
#endif